c operators explained